package JAVA300.第十二章网络编程;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 在线聊天室：服务器端
 * ---实现多个客户可以正常收发数次消息
 * 添加多线程
 * 1.代码不好维护
 * 2。客户端没有分开 只能先写后读
 */

public class web05_TCP6_Chat4Server {
    public static void main(String[] args) throws IOException {

        System.out.println("--------Server-----------");
        //1。指定端口 使用ServerSocket创建服务器
        //***添加while

        ServerSocket server = new ServerSocket(9796);
            while (true) {



                //2.阻塞式的等待链接 accept
                Socket socket = server.accept();
                System.out.println("一个客户端建立了连接");

                new Thread(()->{
                //3接收消息

                    DataInputStream dis = null;
                    DataOutputStream dos =null;
                    try {
                        dis = new DataInputStream(socket.getInputStream());
                        dos = new DataOutputStream(socket.getOutputStream());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    //4返回消息

                boolean isRunning = true;
                while (isRunning) {
                    String msg = null;
                    try {
                        msg = dis.readUTF();
                        dos.writeUTF(msg);
                        dos.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                        //出问题
                        isRunning = false;
                    }


                }
                //5释放资源
                    try {
                        if (null != dos){
                            dos.close();
                        }

                        if (null !=dis){
                            dis.close();
                        }


                        socket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

        }).start();




    }

    }
}
